package com.ptms.controller;

import com.ptms.vo.ResultVO;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;

import java.io.File;
import java.io.IOException;
import java.util.UUID;

@RestController
@RequestMapping("/upload") // 类级前缀，与前端路径匹配
public class UploadController {

    // 教练证件照上传接口（对应前端 /api/upload/coach-photo）
    @PostMapping("/coach-photo")
    public ResultVO<?> uploadCoachPhoto(@RequestParam("file") MultipartFile file) {
        // 1. 校验文件是否为空
        if (file.isEmpty()) {
            return ResultVO.fail(400, "上传文件不能为空");
        }

        try {
            // 2. 定义文件保存路径（实际项目建议使用绝对路径，如 /opt/upload/ 或云存储）
            String uploadDir = "D:/ttns/"; // 本地临时路径，需确保目录存在
            File dir = new File(uploadDir);
            if (!dir.exists()) {
                dir.mkdirs(); // 递归创建目录
            }

            // 3. 生成唯一文件名（避免重名）
            String originalFilename = file.getOriginalFilename();
            String fileExtension = originalFilename.substring(originalFilename.lastIndexOf("."));
            String fileName = UUID.randomUUID() + fileExtension; // 如：a1b2c3.jpg

            // 4. 保存文件到本地
            File dest = new File(uploadDir + fileName);
            file.transferTo(dest);

            // 5. 构建文件访问 URL（实际项目需替换为服务器域名或云存储 URL）
            String fileUrl = "http://localhost:8080/api/upload/coach-photos/" + fileName;
            // 注意：若使用本地路径，需配置静态资源映射（见步骤三）

            // 6. 返回上传成功的 URL
            return ResultVO.success(fileUrl);

        } catch (IOException e) {
            e.printStackTrace();
            return ResultVO.fail(500, "文件上传失败：" + e.getMessage());
        }
    }
}
